const express=require("express");
//引入连接池模块
const pool=require("../pool.js");
//创建路由器对象
const r=express.Router();
//1.用户注册（post /reg）
r.post("/reg",(req,res)=>{
  //1.1获取post请求的数据
  var obj=req.body;
  console.log(obj);
  //1.2验证各项数据是否为空
  var i=400;
  for(var k in obj){
    i++;
	if(!obj[k]){
      res.send({code:i,msg:k+"不能为空"});
	  return;
	}
  }
  //1.3执行SQL命令，将数据插入到数据表
  pool.query("insert into xz_user set ? ",[obj],(err,result)=>{
	if(err){
	  res.send({code:500,msg:"服务器端错误"});
	  return;
	}
	 res.send({code:200,msg:"注册成功"});
  });
});
//2.用户登录（post /login）
  r.post("/login",(req,res)=>{
	//2.1获取post请求的数据
	var obj=req.body;
	console.log(obj);
	//2.2验证各项数据是否为空
	if(!obj.uname){
      res.send({code:401,msg:"uname不能为空"});
	  return;
	}
	if(!obj.upwd){
      res.send({code:401,msg:"upwd不能为空"});
	  return;
	}
	//2.3执行SQL命令
	pool.query("select * from xz_user where uname=? and upwd=?",[obj.uname,obj.upwd],(err,result)=>{
	  if(err){
        console.log(err);
		res.send({code:500,msg:"服务器端错误"});
		return;
	  }
	    console.log(result);
		//返回结果为数组，如果数组长度为0说明登录失败，否则登录成功
		if(result.length===0){
          res.send({code:201,msg:"登录失败"});  
		}else{
          res.send({code:200,msg:"登录成功"});
		}
	});
  });
//3.修改用户资料（put /编号）
r.put("/:uid",(req,res)=>{
  //获取传递的数据
  var obj1=req.params;//路由传参
  var obj2=req.body;//body传递
  console.log(obj1,obj2);
  //3.2验证数据是否为空
  //遍历
  var i=400;
  for(var k in obj2){
    //console.log(k,obj2[k]);
	i++;
	if(!obj2[k]){
      res.send({code:i,msg:k+"不能为空"});
	  return;
	}
  }
  //3.3执行SQL命令
  pool.query('update xz_user set ? where uid=?',[obj2,obj1.uid],(err,result)=>{
    if(err){
	  console.log(err);
	  res.send({code:500,msg:'服务器端错误'});
	  return;
	}
    console.log(result);
	//通过result下的affectedRows判断是否成功，如果是0表示失败
	if(result.affectedRows===0){
	  res.send({code:201,msg:'修改失败'});
	}else{
	  res.send({code:200,msg:'修改成功'});
	}
  });
});
//4.用户列表
r.get('/',(req,res)=>{
  //4.1获取查询字符串传递的数据
  var obj=req.query;
  console.log(obj);
  //4.2验证是否为空
  if(!obj.pno) obj.pno=1;
  if(!obj.count) obj.count=2;
  console.log(obj);
  //4.3计算开始查询的值
  var start=(obj.pno-1)*obj.count;
  //4.4将每页的数据量强制转为整型
  var size=parseInt(obj.count);
  //4.5执行SQL命令
  pool.query('select uid,uname from xz_user limit ?,?',[start,size],(err,result)=>{
    if(err){
	  console.log(err);
	  res.send({code:500,msg:'服务器端错误'});
	  return;
	}
	res.send({code:200,msg:'查询成功',data:result});
  });
});

//http://127.0.0.1:8686/v1/users/checkuname
//5.检测用户名是否被占用（get /checkuname）
r.get("/checkuname/:uname",(req,res)=>{
  //5.1获取路由传参的数据
  var obj=req.params;
  console.log(obj);
  //5.2执行SQL命令，查询该用户名是否存在
  pool.query("select uid,uname from xz_user where uname=?",[obj.uname],(err,result)=>{
    if(err){
	  console.log(err);
	  res.send({code:500,msg:"服务器端错误"});
	  return;
	}
	console.log(result);
	if(result.length===0){
	  res.send({code:200,msg:"该用户名未被注册"});
	}else{
	  res.send({code:201,msg:"该用户名已被注册"});
	}
  });
});

//http://127.0.0.1:8686/v1/users/3
//6.删除用户(delete /编号)
r.delete("/:uid",(req,res)=>{
  //6.1获取数据
  console.log(req.params);
  var obj=req.params;
  //6.2执行SQL命令
   pool.query("delete from xz_user where uid= ?",[obj.uid],(err,result)=>{
	 if(err){
	   console.log(err);
	   res.send({code:500,msg:'服务器端错误'});
	   return;
	 }
       console.log(result);//对象
	   if(result.affectedRows===0){
         res.send({code:201,msg:"删除失败，该用户不存在" });
	   }else{
         res.send({code:200,msg:"删除成功" });
	   }
   });
});

//导出路由器对象
module.exports=r;


